<!doctype html>
<html lang="en">
	<head>
		<meta charset="utf-8" />
		<title>Leaflet debug page - Popup</title>
		<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
		<link rel="stylesheet" href="../../dist/leaflet.css" />
		<link rel="stylesheet" href="../css/screen.css" />
		<script type="importmap">
			{
				"imports": {
					"leaflet": "../../dist/leaflet-src.js"
				}
			}
		</script>
	</head>
	<body>
		<div id="map"></div>
		<script type="module">
			import {TileLayer, LeafletMap, LatLng, FeatureGroup, Marker, Polyline, Polygon, DomUtil, CircleMarker} from 'leaflet';

			const osmUrl = 'https://tile.openstreetmap.org/{z}/{x}/{y}.png';
			const osm = new TileLayer(osmUrl, {maxZoom: 18});

			const map = new LeafletMap('map')
				.setView([50.5, 30.51], 15)
				.addLayer(osm);

			function getRandomLatLng(llbounds) {
				const s = llbounds.getSouth();
				const n = llbounds.getNorth();
				const w = llbounds.getWest();
				const e = llbounds.getEast();

				return new LatLng(
					s + (Math.random() * (n - s)),
					w + (Math.random() * (e - w))
				);
			}

			const features = new FeatureGroup([
				new Marker(getRandomLatLng(map.getBounds())),
				new Polyline([
					getRandomLatLng(map.getBounds()),
					getRandomLatLng(map.getBounds()),
					getRandomLatLng(map.getBounds())
				]),
				new Polygon([
					getRandomLatLng(map.getBounds()),
					getRandomLatLng(map.getBounds()),
					getRandomLatLng(map.getBounds()),
					getRandomLatLng(map.getBounds())
				])
			]);

			features.bindPopup(layer => `Leaflet ID is ${features.getLayerId(layer)}`).addTo(map);

			const content = DomUtil.create('p', 'custom-popup');
			content.innerText = 'I\'m a red polygon';

			new Polygon([
				getRandomLatLng(map.getBounds()),
				getRandomLatLng(map.getBounds()),
				getRandomLatLng(map.getBounds()),
				getRandomLatLng(map.getBounds())
			], {
				color: 'red'
			}).bindPopup(content).addTo(map);

			new Polyline([
				getRandomLatLng(map.getBounds()),
				getRandomLatLng(map.getBounds()),
				getRandomLatLng(map.getBounds())
			], {
				color: 'red'
			}).bindPopup('I\'m a red polyline').addTo(map);

			new CircleMarker(getRandomLatLng(map.getBounds()), {
				color: 'red',
				radius: 25
			}).bindPopup('I\'m a red circle').addTo(map);
		</script>
	</body>
</html>
